#ifndef _ZCAMERA_H_
#define _ZCAMERA_H_

class ZCamera
{
public:
	ZCamera(VOID);
	~ZCamera(VOID);

	VOID FrontBack(FLOAT a_Dist);
	VOID LeftRight(FLOAT a_Dist);
	VOID UPDOWN(FLOAT a_Dist);

	VOID CharEditorPitch(FLOAT a_Angle);
	VOID CharEditorYaw(FLOAT a_Angle);

	VOID Pitch(FLOAT a_Angle);
	VOID Yaw(FLOAT a_Angle);
	VOID Roll(FLOAT a_Angle);

	VOID Set_ViewMatrix();
	D3DXMATRIXA16* Get_matView();

	VOID PositionStatus();

	const D3DXVECTOR3& Get_EyePt()
	{
		return m_vEyePt;
	}

	const D3DXVECTOR3& Get_LookatPt()
	{
		return m_vLookatPt;
	}

	const D3DXVECTOR3& Get_UpVec()
	{
		return m_vUpVec;
	}

	const D3DXVECTOR3& Get_Right()
	{
		return m_vRight;
	}

	VOID ResetCamera();
	VOID SetCamera( D3DXVECTOR3 a_vEyeValue );

private:
	VOID Init();

	D3DXVECTOR3 m_vEyePt;
	D3DXVECTOR3 m_vLookatPt;
	D3DXVECTOR3 m_vUpVec;
	D3DXVECTOR3 m_vRight;

	FLOAT m_fPitchAngle;
	FLOAT m_fYawAngle;
	FLOAT m_fRollAngle;

	D3DXMATRIXA16 m_matView;
};

#endif